/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package LogicaNegocio.Controlador;

import AccesoDatos.Persistencia.Manager.ManagerUsuario;
import GUI.Bibliotecario.AdminUsuarios.PanelDesactivarUsuario;
import LogicaNegocio.Usuarios.Docente;
import LogicaNegocio.Usuarios.Estudiante;
import LogicaNegocio.Usuarios.Usuario;
import javax.swing.JOptionPane;

/**
 * Esta clase en java permite el control de eventos
 * para la desactivacion de usuarios en el sistema.
 *
 * @author sebaxtian
 * Archivo: ControlDesactivarUsuario.java
 * @version 1.0
 * Fecha: lun may 10 23:19:56 COT 2010
 */



public class ControlDesactivarUsuario {

    //Atributos de clase
    private PanelDesactivarUsuario panelDesactivar;
    private ManagerUsuario gestorUsuario;
    private Usuario usuario;
    private boolean encontrado;


    public ControlDesactivarUsuario(PanelDesactivarUsuario panelDesactivar) {
        this.panelDesactivar = panelDesactivar;
        gestorUsuario = new ManagerUsuario();
        encontrado = false;
    }

    public void buscarUsuario() {
        try {
            int cedulaUsuario = Integer.parseInt(panelDesactivar.textFieldBuscar.getText());
            //obtiene el usuario registrado del sistema
            usuario = gestorUsuario.obtenerUsuario(cedulaUsuario);
            //los usuarios tiene un perfil
            Docente docente = gestorUsuario.obtenerDocente(usuario.getIdentificacionUsuario());
            Estudiante estudiante = gestorUsuario.obtenerEstudiante(usuario.getIdentificacionUsuario());
            if (docente != null) {
                mostrarDatosDocente(docente);
                usuario = docente;
            }
            if (estudiante != null) {
                mostrarDatosEstudiante(estudiante);
                usuario = estudiante;
            }
            encontrado = true;
        } catch(NumberFormatException ex) {
            JOptionPane.showMessageDialog(panelDesactivar, "El campo numero de cedula solo debe contener un valor numerico", "Numero Cedula", JOptionPane.ERROR_MESSAGE);
            encontrado = false;
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(panelDesactivar, ex.getMessage(), "Error Buscar", JOptionPane.INFORMATION_MESSAGE);
            encontrado = false;
        }
    }

    public void desactivarUsuario() {
        if(encontrado){
            if(usuario.getActivo()){
                int cedulaUsuario = usuario.getIdentificacionUsuario();
                gestorUsuario.desactivarUsuario(cedulaUsuario);
                encontrado = false;
                limpiarCampos();
                JOptionPane.showMessageDialog(panelDesactivar, "El Usuario ha sido desactivado del sistema con exito", "Desactivar Usuario", JOptionPane.PLAIN_MESSAGE);
            }else{
                JOptionPane.showMessageDialog(panelDesactivar, "El Usuario actualmente esta desactivado del sistema", "Desactivar Usuario", JOptionPane.INFORMATION_MESSAGE);
            }
        }
    }

    private void limpiarCampos() {
        panelDesactivar.radioDocente.setSelected(false);
        panelDesactivar.radioEstudiante.setSelected(false);
        panelDesactivar.checkActivo.setSelected(false);
        panelDesactivar.textAreaIntereses.setText("");
        panelDesactivar.textFieldBuscar.setText("");
        panelDesactivar.textFieldCarrera.setText("");
        panelDesactivar.textFieldCedula.setText("");
        panelDesactivar.textFieldDependencia.setText("");
        panelDesactivar.textFieldDireccion.setText("");
        panelDesactivar.textFieldEmail.setText("");
        panelDesactivar.textFieldPrimerApellido.setText("");
        panelDesactivar.textFieldPrimerNombre.setText("");
        panelDesactivar.textFieldSegundoApellido.setText("");
        panelDesactivar.textFieldSegundoNombre.setText("");
        panelDesactivar.textFieldTelefono.setText("");
        panelDesactivar.textFieldTitulo.setText("");
        panelDesactivar.textFieldUniversidad.setText("");
    }
    
    private void mostrarDatosDocente(Docente docente) {
        //muestra los datos actuales
        panelDesactivar.textAreaIntereses.setText(docente.getAreasInteres());
        panelDesactivar.textFieldCedula.setText(docente.getIdentificacionUsuario()+"");
        panelDesactivar.textFieldDependencia.setText(docente.getDependecia());
        panelDesactivar.textFieldDireccion.setText(docente.getDireccion());
        panelDesactivar.textFieldEmail.setText(docente.getEmail());
        panelDesactivar.textFieldPrimerApellido.setText(docente.getPrimerApellido());
        panelDesactivar.textFieldPrimerNombre.setText(docente.getPrimerNombre());
        panelDesactivar.textFieldSegundoApellido.setText(docente.getSegundoApellido());
        panelDesactivar.textFieldSegundoNombre.setText(docente.getSegundoNombre());
        panelDesactivar.textFieldTelefono.setText(docente.getTelefono());
        panelDesactivar.textFieldTitulo.setText(docente.getTitulo());
        panelDesactivar.radioDocente.setSelected(true);
        panelDesactivar.checkActivo.setSelected(docente.getActivo());
    }

    private void mostrarDatosEstudiante(Estudiante estudiante) {
        //muestra los datos actuales
        panelDesactivar.textFieldCarrera.setText(estudiante.getCarrera());
        panelDesactivar.textFieldCedula.setText(estudiante.getIdentificacionUsuario()+"");
        panelDesactivar.textFieldDireccion.setText(estudiante.getDireccion());
        panelDesactivar.textFieldEmail.setText(estudiante.getEmail());
        panelDesactivar.textFieldPrimerApellido.setText(estudiante.getPrimerApellido());
        panelDesactivar.textFieldPrimerNombre.setText(estudiante.getPrimerNombre());
        panelDesactivar.textFieldSegundoApellido.setText(estudiante.getSegundoApellido());
        panelDesactivar.textFieldSegundoNombre.setText(estudiante.getSegundoNombre());
        panelDesactivar.textFieldTelefono.setText(estudiante.getTelefono());
        panelDesactivar.textFieldUniversidad.setText(estudiante.getUniversidad());
        panelDesactivar.radioEstudiante.setSelected(true);
        panelDesactivar.checkActivo.setSelected(estudiante.getActivo());
    }

}
